package br.com.linkcom.sined.geral.dao;

import java.util.List;

import br.com.linkcom.sined.geral.bean.Usuario;
import br.com.linkcom.sined.geral.bean.Usuariofilme;
import br.com.linkcom.sined.modulo.sistema.controller.process.filter.RecomendarFilmeFiltro;
import br.com.linkcom.sined.util.neo.persistence.GenericDAO;

public class UsuariofilmeDAO extends GenericDAO<Usuariofilme>{
	
	public List<Usuariofilme> findForRecomendarFilme(RecomendarFilmeFiltro filtro, Usuario usuario){
		return query()
				.joinFetch("usuariofilme.usuario usuario")
				.joinFetch("usuariofilme.filme filme")
				.where("filme.cdfilme not in (select f.cdfilme" +
					   "					  from Usuariofilme uf" +
					   "					  join uf.usuario u" +
					   "					  join uf.filme f" +
					   "					  where u=?)", filtro.getUsuario())
				.where("usuariofilme.nota>=?", filtro.getNotaMinima())
				.where("usuario=?", usuario)	   
				.list();
	}	
	
	public List<Usuariofilme> findForRecomendarFilmeMaiorNota(){
		return query()
			.joinFetch("usuariofilme.usuario usuario")
			.joinFetch("usuariofilme.filme filme")
			.orderBy("usuariofilme.nota desc")
			.setMaxResults(10)
			.list();
	}	
}